Debugging software that executes on hardware systems is the process of recognizing, identifying and fixing or isolating software and/or hardware errors. An error occurs when an actual result does not match an expected result, and can be caused by errors in the software and/or hardware.
Developing software applications for a new computer processor typically uses a software simulation of the new processor design where software being developed is run on the software model of the chip being developed.
Debugging mixed software/hardware systems is easier if either the software or the hardware has been verified as accurate in another system. Debugging mixed software/hardware systems where neither has been verified to be accurate is difficult, and this difficulty scales as the number of interrelated processes increases.
The difficulty of debugging a software/hardware system that is based on an architecture of dozens or hundreds of individual processors does not scale linearly from experience in single processor systems. Not only must the operation of each processor be verified, but communication paths and buffers between the processors must be exposed for analysis. No tool currently exists that provides the type of exposure, depth, and flexibility necessary to adequately debug such multi-processor systems.
Embodiments of the invention address these and other limitations in the prior art.